package site.wlwsjsx.iot_backend.utils;

public class InputValidationUtil {

    /**
     * 检查用户名是否合法
     *
     * @param username 用户名
     * @return 是否合法
     */
    public static boolean isValidUsername(String username) {
        if (username == null || username.trim().isEmpty()) {
            return false;
        }
        // 用户名长度应在10-15个字符之间
        if (username.length() < 10 || username.length() > 15) {
            return false;
        }
        // 用户名只能包含字母、数字和下划线
        return username.matches("^[a-zA-Z0-9_]+$");
    }

    /**
     * 检查密码是否合法
     *
     * @param password 密码
     * @return 是否合法
     */
    public static boolean isValidPassword(String password) {
        if (password == null || password.trim().isEmpty()) {
            return false;
        }
        // 密码长度至少6个字符
        if (password.length() < 6) {
            return false;
        }
        // 密码应包含至少一个字母和一个数字
//        boolean hasLetter = password.matches(".*[a-zA-Z].*");
//        boolean hasDigit = password.matches(".*[0-9].*");
//        return hasLetter && hasDigit;
        return true;
    }

    /**
     * 检查真实姓名是否合法
     *
     * @param realName 真实姓名
     * @return 是否合法
     */
    public static boolean isValidRealName(String realName) {
        if (realName == null || realName.trim().isEmpty()) {
            return false;
        }
        // 真实姓名长度应在2-20个字符之间
        if (realName.length() < 2 || realName.length() > 20) {
            return false;
        }
        // 真实姓名只能包含中文、英文和空格
        return realName.matches("^[\\u4e00-\\u9fa5a-zA-Z\\s]+$");
    }

    /**
     * 检查手机号是否合法
     *
     * @param phone 手机号
     * @return 是否合法
     */
    public static boolean isValidPhone(String phone) {
        if (phone == null || phone.trim().isEmpty()) {
            return true; // 手机号可以为空
        }
        // 中国大陆手机号正则表达式
        return phone.matches("^1[3-9]\\d{9}$");
    }

    /**
     * 检查邮箱是否合法
     *
     * @param email 邮箱
     * @return 是否合法
     */
    public static boolean isValidEmail(String email) {
        if (email == null || email.trim().isEmpty()) {
            return true; // 邮箱可以为空
        }
        // 邮箱正则表达式
        return email.matches("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$");
    }
}
